package com.itnoob.component;

import com.itnoob.component.AccessDecisionVoter;
import com.itnoob.domain.Request;
import com.itnoob.domain.User;

import java.util.List;

// 组合模式的叶子节点，实现了AccessDecisionVoter接口
// 这个类用于判断用户是否有资源权限
public class ResourceVoter implements AccessDecisionVoter {
    @Override
    public int vote(User user, Request request) {
        // 获取用户的资源列表
        List<String> resources = user.getResources();
        // 获取请求需要的资源列表
        List<String> requiredResources = request.getRequiredResources();
        // 如果用户的资源列表包含请求需要的所有资源，则授权通过
        for (String resource : requiredResources) {
            if (!resources.contains(resource)) {
                return ACCESS_DENIED;
            }
        }
        return ACCESS_GRANTED;
    }

}

